#ifndef NE_STL_INCLUDENE_STL_MAP_H
#define NE_STL_INCLUDENE_STL_MAP_H
#include "ne_stl_build.h"
#include "phmap.h"
namespace nstd {
template <class K>
using hash_default_hash = phmap::priv::hash_default_hash<K>;
template <class K>
using hash_default_eq = phmap::priv::hash_default_eq<K>;
template <class K, class V>
using Pair = phmap::priv::Pair<const K, V>;
template <class K>
using Allocator = phmap::priv::Allocator<K>;
template <class K, class V, class Hash = hash_default_hash<K>, class Eq = hash_default_eq<K>, class Alloc = Allocator<Pair<const K, V>>>
class map : public phmap::flat_hash_map<K, V, Hash, Eq, Alloc> {  // NOLINT
public:
    map() = default;
};
using NullMutex = phmap::NullMutex;
template <class K,
    class V,
    class Hash = hash_default_hash<K>,
    class Eq = hash_default_eq<K>,
    class Alloc = Allocator<Pair<const K, V>>,
    size_t N = 4,  // NOLINT
    class Mtx = NullMutex>
class parallel_map : public phmap::parallel_flat_hash_map<K, V, Hash, Eq, Alloc> {  // NOLINT
public:
    parallel_map() = default;
};
}  // namespace nstd
#endif  // NE_STL_INCLUDENE_STL_MAP_H
